# 定义编译器和编译选项，包括链接pthread库
CXX = g++
CXXFLAGS = -std=c++23 -Wall -Wextra -O2 -pthread -ljsoncpp

# 源文件和目标文件的命名
SOURCES = oj_server.cc
EXECUTABLE = oj_server

# 编译规则，确保链接pthread库
all: $(EXECUTABLE)

$(EXECUTABLE): $(SOURCES)
	$(CXX) $(CXXFLAGS) -o $@ $^

# 清理规则，删除生成的可执行文件
clean:
	rm -f $(EXECUTABLE)

# 运行规则（如果需要的话）
run: $(EXECUTABLE)
	./$(EXECUTABLE)

# 重新编译（如果源代码有变动）
rebuild: clean all

# 帮助信息
help:
	@echo "Makefile Usage:"
	@echo "  make all     - 编译源代码，链接pthread库"
	@echo "  make run     - 编译并运行程序"
	@echo "  make clean   - 清理编译生成的可执行文件"
	@echo "  make rebuild - 清理后重新编译"